#ifndef CONVERTFORMAT_H
#define CONVERTFORMAT_H
#include "data.h"

#define __STDC_CONSTANT_MACROS
extern "C"{
    #include <libavutil/imgutils.h>
    #include <libswscale/swscale.h>
}

class ConvertFormat
{
public:
    ConvertFormat(AVPixelFormat src_fmt,
                  AVPixelFormat dst_fmt);
    bool SetDataSize(int src_w,
                     int src_h,
                     int dst_w,
                     int dst_h);
    int PrepareConvert();
    int ConvertData(Data::DataPtr& data);

private:
    int srcW;
    int srcH;
    int dstW;
    int dstH;
    int bufSize;

    struct SwsContext* swsCtx;
    AVPixelFormat srcFmt;
    AVPixelFormat dstFmt;
    u_int8_t *src_data[4];
    u_int8_t *dst_data[4];
    int src_linesize[4];
    int dst_linesize[4];
};

#endif // CONVERTFORMAT_H
